
package unq.edu.cui.tp.arena;

import java.awt.Color;

import org.uqbar.arena.actions.MessageSend;
import org.uqbar.arena.bindings.NotNullObservable;
import org.uqbar.arena.layout.ColumnLayout;
import org.uqbar.arena.layout.HorizontalLayout;
import org.uqbar.arena.widgets.Button;
import org.uqbar.arena.widgets.Panel;
import org.uqbar.arena.widgets.tables.Column;
import org.uqbar.arena.widgets.tables.Table;
import org.uqbar.arena.windows.SimpleWindow;
import org.uqbar.arena.windows.WindowOwner;

import unq.edu.cui.tp.dominio.Empleado;
import unq.edu.cui.tp.dominio.Sistema;
import unq.edu.cui.tp.modelo.ventanas.CrearEmpleado;
import unq.edu.cui.tp.modelo.ventanas.EditarEmpleado;
import unq.edu.cui.tp.modelo.ventanas.GestionarEmpleados;

public class EmpleadosWindow extends SimpleWindow<GestionarEmpleados> {

	public EmpleadosWindow(WindowOwner parent, GestionarEmpleados model) {
		super(parent, model);
	}


	@Override
	protected void createMainTemplate(Panel mainPanel) {
		this.setTitle("Empleados");
		this.setTaskDescription("");

		super.createMainTemplate(mainPanel);

		this.createGrid(mainPanel);
		this.createGridActions(mainPanel);
	}
	
	
	@Override
	protected void createFormPanel(Panel mainPanel) {
		Panel formPanel = new Panel(mainPanel);
		formPanel.setLayout(new ColumnLayout(2));
		
	}

	@Override
	protected void addActions(Panel actionsPanel) {
		
		new Button(actionsPanel)
		.setCaption("Crear") //crear un empleado
		.onClick(new MessageSend(this, "crearEmpleado"));
	}
	
	
	protected void createGrid(Panel mainPanel) {
		Table<Empleado> table = new Table<Empleado>(mainPanel, Empleado.class);
		table.setHeigth(200);
		table.setWidth(450);

		table.bindItemsToProperty("sistema.empleados");
		table.bindValueToProperty("empleadoSeleccionado");

		this.describeGrid(table);
	}
	
	protected void describeGrid(Table<Empleado> table) {
		new Column<Empleado>(table)
			.setTitle("Nombre")
			.setFixedSize(150)
			.bindContentsToProperty("nombre");

		new Column<Empleado>(table)
			.setTitle("Apellido")
			.setFixedSize(100)
			.bindContentsToProperty("apellido");
		
		new Column<Empleado>(table)
		.setTitle("Legajo")
		.setFixedSize(100)
		.bindContentsToProperty("legajo");
		
		new Column<Empleado>(table)
		.setTitle("Dias")
		.setFixedSize(100)
		.bindContentsToProperty("diasDisponiblesVista");

	}
	
	protected void createGridActions(Panel mainPanel) {
		Panel actionsPanel = new Panel(mainPanel);
		actionsPanel.setLayout(new HorizontalLayout());

		Button edit = new Button(actionsPanel);
		edit.setCaption("Editar");
		edit.onClick(new MessageSend(this, "editarEmpleado"));
		
		// Deshabilitar el boton 'Editar' si no hay ningún elemento seleccionado en la grilla.
		NotNullObservable elementSelected = new NotNullObservable("empleadoSeleccionado");
		edit.bindEnabled(elementSelected);
	}
	
	
	// ********************************************************
		// ** Acciones
		// ********************************************************

		public void crearEmpleado() {
			new CrearEmpleadoWindow(this, new CrearEmpleado(new Empleado(), this.getModelObject().getSistema())).open();
		}
		
		public void editarEmpleado() {
			new EditarEmpleadoWindow(this, new EditarEmpleado(this.getModelObject().getEmpleadoSeleccionado())).open();
		}
}	

